123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293 |
- unit libflatpickr;
- {$mode objfpc}
- {$modeswitch externalclass}
- interface
- uses types, js, web, libjquery;
- Type
- TJSDateDynArray = Array of TJSDate;
- TJSHTMLElementDynArray = Array of TJSHTMLElement;
- TJSHTMLInputElementDynArray = Array of TJSHTMLInputElement;
- TJSNodeDynArray = Array of TJSNode;
- TJSHTMLDivElement = TJSHTMLElement;
- TJSHTMLSpanElement = TJSHTMLElement;
- TFPRevFormat = JSValue;
- TFPFormats = JSValue;
- TFPTokenRegex = JSValue;
- TFPLocaleKey = string;
- TFPDateOption = jsValue;
- TFPDateOptionArray = array of TFPDateOption;
- TFPPositionFunction = reference to procedure(aSelf: TJSObject; customElement: TJSHTMLElement);
- TFPErrorHandler = reference to procedure (e: TJSError);
- TFPWeekdayNames = Class external name 'Object' (TJSObject)
- shorthand : array[0..6] of string;
- longhand : array[0..6] of string;
- end;
- TFPMonthNames = Class external name 'Object' (TJSObject)
- shorthand : array[0..11] of string;
- longhand : array[0..11] of string;
- end;
- TFPDaysInmonth = Array [0..11] of Integer;
- TFPOrdinalFunction = reference to function (nth: integer) : string;
- TFPAMPMArray = array[0..1] of string;
- TFPLocale = Class external name 'Object' (TJSObject)
- weekdays : TFPWeekDayNames;
- months : TFPMonthNames;
- daysInMonth : TFPDaysInMonth;
- firstDayOfWeek: Integer;
- ordinal: TFPOrdinalfunction;
- rangeSeparator: string;
- weekAbbreviation: string;
- scrollTitle: string;
- toggleTitle: string;
- amPM: TFPAMPMArray;
- yearAriaLabel: string;
- monthAriaLabel: string;
- hourAriaLabel: string;
- minuteAriaLabel: string;
- time_24hr: boolean;
- end;
- TFPDateFormatHandler = reference to function (date: TJSDate; format: string; locale: TFPLocale) : String;
- TFPDateParserHandler = reference to function (date: string; format: string) : TJSDate;
- TFPHook = reference to Procedure (dates : TJSDateDynArray; CurrentDateString : String; aSelf : TJSObject; Data : JSValue);
- TFPHookDynArray = Array of TFPHook;
- TFPDateToWeekHandler = reference to function (adate: TJSDate) : string;
- TFlatPickrOptions = Class external name 'Object' (TJSObject)
- allowInput: boolean;
- allowInvalidPreload: boolean;
- altFormat: string;
- altInput: boolean;
- altInputClass: string;
- animate: boolean;
- appendTo: TJSHTMLElement;
- ariaDateFormat: string;
- autoFillDefaultTime: boolean;
- clickOpens: boolean;
- closeOnSelect: boolean;
- conjunction: string;
- dateFormat: string;
- defaultDate: TFPDateOption;
- defaultDateArray : TFPDateOptionArray; external name 'defaultDate';
- defaultHour: Integer;
- defaultMinute: Integer;
- defaultSeconds: Integer;
- disable: JSValue;
- disableMobile: boolean;
- enable: JSValue;
- enableSeconds: boolean;
- enableTime: boolean;
- errorHandler: TFPErrorHandler;
- formatDate: TFPDateFormatHandler;
- getWeek : TFPDateToWeekHandler;
- hourIncrement: integer;
- ignoredFocusElements: TJSHTMLElementDynArray;
- inline_: boolean; external name 'inline';
- locale: string;
- maxDate: TFPDateOption;
- maxTime: TFPDateOption;
- minDate: TFPDateOption;
- minTime: TFPDateOption;
- minuteIncrement: integer;
- mode: string;
- monthSelectorType: string;
- nextArrow: string;
- noCalendar: boolean;
- now: TFPDateOption;
- onChange: TFPHook;
- onChangeArray : TFPHookDynArray; external name 'onChange';
- onClose: TFPHook;
- onCloseArray : TFPHookDynArray; external name 'onClose';
- onDayCreate: TFPHook;
- onDayCreateArray : TFPHookDynArray; external name 'onDayCreate';
- onDestroy: TFPHook;
- onDestroyArray : TFPHookDynArray; external name 'onDestroy';
- onKeyDown: TFPHook;
- onKeyDownArray : TFPHookDynArray; external name 'onKeyDown';
- onMonthChange: TFPHook;
- onMonthChangeArray : TFPHookDynArray; external name 'onMonthChange';
- onOpen: TFPHook;
- onOpenArray : TFPHookDynArray; external name 'onOpen';
- onParseConfig: TFPHook;
- onParseConfigArray : TFPHookDynArray; external name 'onParseConfig';
- onReady: TFPHook;
- onReadyArray : TFPHookDynArray; external name 'onReady';
- onValueUpdate: TFPHook;
- onValueUpdateArray : TFPHookDynArray; external name 'onValueUpdate';
- onYearChange: TFPHook;
- onYearChangeArray : TFPHookDynArray; external name 'onYearChange';
- onPreCalendarPosition: TFPHook;
- onPreCalendarPositionArray : TFPHookDynArray; external name 'onPreCalendarPosition';
- parseDate: TFPDateParserHandler;
- plugins: TJSValueDynArray;
- position: String;
- positionFunction : TFPPositionFunction; external name 'position';
- positionElement: TJSHTMLElement;
- prevArrow: string;
- shorthandCurrentMonth: boolean;
- static_: boolean; external name 'static';
- showMonths: Integer;
- time_24hr: boolean;
- weekNumbers: boolean;
- wrap: boolean;
- end;
- TFlatPickr = Class external name 'Object' (TJSObject)
- // Formatting
- revFormat: TFPRevFormat;
- formats: TFPFormats;
- tokenRegex: TFPTokenRegex;
- // elements
- element: TJSHTMLElement;
- input: TJSHTMLInputElement;
- altInput: TJSHTMLInputElement;
- _input: TJSHTMLInputElement;
- mobileInput: TJSHTMLInputElement;
- mobileFormatStr: string;
- selectedDateElem: TJSHTMLElement;
- todayDateElem: TJSHTMLElement;
- _positionElement: TJSHTMLElement;
- weekdayContainer: TJSHTMLDivElement;
- calendarContainer: TJSHTMLDivElement;
- innerContainer: TJSHTMLDivElement;
- rContainer: TJSHTMLDivElement;
- daysContainer: TJSHTMLDivElement;
- days: TJSHTMLDivElement;
- weekWrapper: TJSHTMLDivElement;
- weekNumbers: TJSHTMLDivElement;
- // month nav
- monthNav: TJSHTMLDivElement;
- monthsDropdownContainer: TJSHTMLSelectElement;
- yearElements: TJSHTMLInputElementDynArray;
- monthElements: TJSHTMLSpanElement;
- // month nav getters
- currentYearElement: TJSHTMLInputElement;
- currentMonthElement: TJSHTMLSpanElement;
- // month nav arrows
- _hidePrevMonthArrow: boolean;
- _hideNextMonthArrow: boolean;
- prevMonthNav: TJSHTMLElement;
- nextMonthNav: TJSHTMLElement;
- timeContainer: TJSHTMLDivElement;
- hourElement: TJSHTMLInputElement;
- minuteElement: TJSHTMLInputElement;
- secondElement: TJSHTMLInputElement;
- amPM: TJSHTMLSpanElement;
- pluginElements: TJSNodeDynArray;
- minRangeDate: TJSDate;
- maxRangeDate: TJSDate;
- now: TJSDate;
- latestSelectedDateObj: TJSDate;
- _selectedDateObj : TJSDate;
- selectedDates: TJSDateDynArray;
- _initialDate: TJSDate;
- // State
- config: TJSObject;
- loadedPlugins: TJSstringDynArray;
- l10n: TFPLocale;
- currentYear: integer;
- currentMonth: integer;
- isOpen: boolean;
- isMobile: boolean;
- minDateHasTime: boolean;
- maxDateHasTime: boolean;
- // Methods
- procedure changeMonth (value: Integer; isOffset: boolean; fromKeyboard: boolean);
- procedure changeMonth (value: Integer; isOffset: boolean);
- procedure changeMonth (value: Integer);
- procedure changeYear (year: integer);
- procedure clear (emitChangeEvent: boolean; toInitial: boolean);
- procedure clear (emitChangeEvent: boolean);
- procedure clear ();
- procedure close ();
- procedure destroy ();
- function isEnabled (date: TFPDateOption; timeless: boolean) : boolean;
- function isEnabled (date: TFPDateOption) : boolean;
- procedure jumpToDate (date: TFPDateOption; triggerChange: boolean);
- procedure open (e: TJSEvent; positionElement: TJSHTMLElement);
- procedure open (e: TJSEvent);
- procedure redraw ();
- procedure set_ (option: string; value: JSValue) ; external name 'set';
- procedure setDate (date: TFPDateOption; triggerChange: boolean; format: string) ;
- procedure setDate (date: TFPDateOption; triggerChange: boolean) ;
- procedure setDate (date: TFPDateOption) ;
- procedure setDate (date: TFPDateOptionArray; triggerChange: boolean; format: string) ;
- procedure setDate (date: TFPDateOptionArray; triggerChange: boolean) ;
- procedure setDate (date: TFPDateOptionArray);
- procedure toggle;
- function pad (num: string ) : string;
- function pad (num: integer ) : string;
- function parseDate (adate: TJSDate; givenFormat: string; timeless: boolean) : TJSDate;
- function parseDate (adate: string; givenFormat: string; timeless: boolean) : TJSDate;
- function parseDate (adate: integer; givenFormat: string; timeless: boolean) : TJSDate;
- function parseDate (adate: TJSDate; givenFormat: string) : TJSDate;
- function parseDate (adate: string; givenFormat: string) : TJSDate;
- function parseDate (adate: integer; givenFormat: string) : TJSDate;
- function formatDate (dateObj: TJSDate; frmt: string) : string;
- end;
- TFlatPickrArray = array of TFlatPickr;
- { JQueryFlatPickrHelper }
- JQueryFlatPickrHelper = class helper for TJQuery
- Function flatpickr (aOptions : TFlatPickrOptions) : TFlatPickr; external name 'flatpickr';
- Function flatpickr () : TFlatPickr; external name 'flatpickr';
- end;
- { JJSElementFlatPickrHelper }
- JJSElementFlatPickrHelper = class helper for TJSElement
- Function _flatpickr : TFlatPickr;
- end;
- Function flatpickr(aElement : TJSHTMLElement) : TFlatPickr; external name 'flatpickr';
- Function flatpickr(aElement : TJSHTMLElement; aOptions : TFlatPickrOptions) : TFlatPickr; external name 'flatpickr';
- Function flatpickr(aElementID : String) : TFlatPickr; external name 'flatpickr';
- Function flatpickr(aElementID : String; aOptions : TFlatPickrOptions) : TFlatPickr; external name 'flatpickr';
- Function multiflatpickr(const aSelector : String) : TFlatPickrArray; external name 'flatpickr';
- Function multiflatpickr(const aSelector : String; aOptions : TFlatPickrOptions) : TFlatPickrArray; external name 'flatpickr';
- implementation
- { JQueryFlatPickrHelper }
- { JJSElementFlatPickrHelper }
- function JJSElementFlatPickrHelper._flatpickr: TFlatPickr;
- begin
- Result:=TFlatPickr(Self.Properties['_flatpickr']);
- end;
- end.
|